home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / rwvector.lha / RWVector2.1 / src / speed.cc < prev    next >
C/C++ Source or Header  |  1989-08-18  |  1KB  |  47 lines

  1. #include <rw/DComplexFFT.h>
  2. #include <rw/DCosineFFT.h>
  3. #include <rw/Timer.h>
  4.  
  5. // This program is designed to test the difference in speed
  6. // between cosine transforms and full complex transforms.
  7. // It also serves as an example of using the FFT servers.
  8.  
  9. main()
  10. {
  11.   unsigned N, nit;
  12.  
  13.   cout << "Give N: ";
  14.   cin >> N;
  15.  
  16.   cout << "Give number of iterations: ";
  17.   cin >>nit;
  18.  
  19.   DoubleVec veven(N+1);        // The test series
  20.   for(int i = 0; i<=N; i++) veven(i) = i;
  21.  
  22.   DComplexVec vfull(expandEven(veven));    // Make a complex version
  23.  
  24.   DComplexFFTServer cserver;    // Make the two servers
  25.   DoubleCosineServer cosserver;
  26.  
  27.   /**************** Cosine transforms ***************/
  28.   DoubleVec inveven;        // Results go here
  29.   Timer t1;
  30.   t1.mark("Start cosine transforms");
  31.  
  32.   for(int j = 0; j<nit; j++) inveven = cosserver.cosine(veven);
  33.   t1.mark("Done with cosine transforms");
  34.  
  35.   cout <<"Cosine timing info:\n"<<t1<<NL;
  36.  
  37.   /**************** Complex transforms ***************/
  38.   DComplexVec inv;
  39.   Timer t2;
  40.   t2.mark("Start full transforms");
  41.  
  42.   for(j = 0; j<nit; j++) inv = cserver.fourier(vfull);
  43.   t2.mark("Done with full transforms");
  44.  
  45.   cout << "Complex timing info:\n"<<t2<<NL;
  46. }
  47.